class TComm{
    constructor(){

    }
    static cb(callback , p0 , p1 , p2){
        if(callback && callback!=null){
            try{
                callback(p0 , p1, p2);
            }
            catch(er){
                console.log(er);
            }
        }
    }
    static extend ( a , b) {
        try{
            if( a==null || !a){
                a = {};
            }
            if( b && b!=null){
                for( var p in b ){
                    a[p] = b[p];
                }
            }
        }
        catch (e) {
            console.log(e);
        }
        return a;
    };
    /*
    * itemFunction的形式为：
    * function( item , result , onCallItem){
    *   处理的源数据为item.
    *   处理后的结果存放在 result
    *   一定要在处理结果后调用onCallItem()
    * }
    * */
    static loopCall ( items , itemFunction , onCompete) {
        try{
            var res ={};
            var datas = [];
            items.forEach(function (i) {
                datas.push(i);
            })
            var callItem = function () {
                if(datas.length>0){
                    var item = datas.shift();
                    itemFunction(item , res , function () {
                        callItem();
                    })
                }
                else{
                    TComm.cb(onCompete , res);
                }
            }
            callItem();
        }
        catch (e) {
            console.log(e);
        } 
    };

    static isnull(obj){
        return obj==null ||!obj;
    }
} 

module.exports={
    TComm : TComm
}